/* 
图书管理的路由器
*/
const express = require('express') // 引入第三方框架包

const BookModel = require('../models/BookModel') // 获取数据库的表（方便后续增删改查）

const router = express.Router(); // 创建路由


// 使用async和await就是为了简便

// 图书列表
router.get('/',async (req,res)=>{
  // 查找所有的books列表的内容
  try {
    const data = await BookModel.find(); // 异步执行函数 下面会等待
    // 获取数据成功，返回图片列表
    res.json({
      status:200,
      data,
      message:'获取列表成功'
    })
  } catch (error) { 
    // 获取数据失败，返回错误页面
    res.json({
      status:404,
      message:'获取列表失败'
    })
  }
})

// 一个图书信息
router.get('/:id', async (req,res)=>{
  // 查找单个的图书的内容
  try {
    const {id} = req.params; // 获取id
    const data = await BookModel.findById({_id:id}); // 异步执行函数 下面会等待
    // 获取图书数据成功，返回图片列表
    res.json({
      status:200,
      data,
      message:'获取图书成功'
    })
  } catch (error) { 
    // 获取数据失败，返回错误页面
    res.json({
      status:404,
      message:'获取图书失败'
    })
  }
})

// 添加图书数据
router.post('/', async (req,res)=>{
  try {
    // 获取图书的内容book对象（不包含_id）
    const book = req.body;
    await BookModel.create(book); // 异步执行函数 下面会等待
    // 添加数据成功
    res.json({
      status:200,
      message:'添加图书成功'
    })
  } catch (error) { 
    // 添加数据失败
    res.json({
      status:404,
      message:'添加图书失败'
    })
  }
})

// 修改图书数据
router.put('/', async (req,res)=>{
  try {
    // 获取图书的内容book对象（包含_id）
    const book = req.body;
    console.log(book);
    await BookModel.updateOne({_id:book._id},book); // 异步执行函数 下面会等待
    // 修改数据成功
    res.json({
      status:200,
      message:'修改图书成功'
    })
  } catch (error) { 
    // 修改数据失败
    res.json({
      status:404,
      message:'修改图书失败'
    })
  }
})

// 删除对应图书数据
router.delete('/', async (req,res)=>{
  try {
    // 获取图书的id
    const {id} = req.query;
    await BookModel.deleteOne({_id:id}); // 异步执行函数 下面会等待
    // 删除数据成功
    res.json({
      status:200,
      message:'删除数据成功'
    })
  } catch (error) { 
    // 删除数据失败
    res.json({
      status:404,
      data,
      message:'删除数据失败'
    })
  }
})

// 返回路由
module.exports = router